package com.generic.customGeneric;

/**
 * @author LingLed
 * @version 1.0
 */
public class CustomMethodGeneric01 {
    public static void main(String[] args) {
        //泛型方法
        //可以定义在普通类中,也可以定义在泛型类中
        //但泛型方法中的泛型类型参数,只能使用在当前方法中
        //泛型方法和使用了泛型的方法是两回事,可以看下面代码演示
        //泛型方法的泛型参数可以是任意类型,取决于你传入的参数,默认是Object
        //通常泛型方法的泛型类型名和泛型类的泛型类型名不一致
        Person<String,Integer> person = new Person<>("张三");
        person.show();
        Integer r = person.getR(100);
        System.out.println(r);
        System.out.println("泛型方法:");
        Double run = person.run(1001.1);
        Integer run1 = person.run(1001);
        String string = person.run("String");
        Object run2 = person.run(null);
    }
    static class Person<T,R>{
        T t;

        public Person(T t) {
            this.t = t;
        }

        //普通方法
        public void show(){
            System.out.println(t);
        }

        //使用了泛型的方法
        public R getR(R r){
            return r;
        }

        //泛型方法
        public <U> U run(U u){
            System.out.println(u);
            return u;
        }
    }
}
